package com.example.service.user;

import com.example.exception.InvalidCacheException;
import com.example.exception.InvalidTokenException;
import com.example.pojo.User;

/**
 * 用户鉴权服务, 只提供最基本的 '登录'操作, 可以根据给定的 token 鉴别用户的身份
 * 单一权责原则
 * @author LeXin Huang
 * @date 2021年04月27日 20:36
 */
public interface UserAuthenticationService {

    /**
     * 权限验证方法, 判断所给令牌是否有效, 如果有效则刷新持续时间, 并返回用户对象
     * @param token 用户令牌
     * @return 用户对象, 如果 token 存在且用户缓存合法
     * @throws InvalidTokenException 当 token 无效时
     * @throws InvalidCacheException 当 token 对应的用户缓存中 username 为 null 时
     */
    User login(String token);
}
